package com.laohei.bili_tube.core.util

import android.annotation.SuppressLint
import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.unit.Dp
import kotlin.properties.Delegates

object SystemUtil {
    var statusBarHeight by Delegates.notNull<Int>()
        private set

    var navigateBarHeight by Delegates.notNull<Int>()
        private set

    const val MAX_ASPECT_RATIO: Float = 16 / 9f
    const val MIN_ASPECT_RATIO: Float = 9 / 16f

    @SuppressLint("InternalInsetResource", "DiscouragedApi")
    fun init(context: Context) {
        //调用安卓提供的查找方法
        context.resources.getIdentifier(
            //查找的资源名称
            "status_bar_height",
            //这是资源的类型，表示该资源是一个维度（dimension）资源。维度资源一般用于定义尺寸、间距等数值，并且可以指定单位（如 dp、sp、px 等）
            "dimen",
            //这是资源所在的包名。当包名为 "android" 时，表示查找的是系统内置资源，而不是应用自定义的资源。Android 系统在其框架中预定义了很多资源（包括尺寸、颜色、布局等），通过指定 "android" 可以确保获取到的是系统统一定义的状态栏高度，而不是应用中可能存在的同名资源
            "android"
        ).apply {
            statusBarHeight = context.resources.getDimensionPixelSize(this)
        }
        context.resources.getIdentifier("navigation_bar_height", "dimen", "android").apply {
            navigateBarHeight = context.resources.getDimensionPixelSize(this)
        }
    }

    @Composable
    fun getStatusBarHeightDp(): Dp {
        val density= LocalDensity.current
        return with(density) { statusBarHeight.toDp() }
    }

    @Composable
    fun getNavigateBarHeightDp(): Dp {
        val density= LocalDensity.current
        return with(density) { navigateBarHeight.toDp() }
    }
}